一.IO流体系
   字节流体系
      OutputStream (抽象类)
         FileOutputStream 向文件写字节输出流
      BufferedOutputStream 高效字节输出流

	  InputStream
         FileInputStream 从文件中读取字节
      BufferedInputStream 高效字节输入流
   字符流体系
      Writer
        FileWriter 向文件中写字符输出流
      BufferedWriter 高效字符输出流

      Reader
        FileReader 从文件中读字符
      BufferedReader 高效字符输入流
二.码表(字符集):charset 其实是一张字节和字符的映射表
   10101010 =>8bit=>1byte
   97 => a
   ASCII码表:美国标准信息交换码 a~z,A~Z 1个ASCII字符占用1byte,不识别中文
	(GB2312)GBK:中国制作的码表,字节和中文的映射表,1个中文占用2个字节
               假设: 1010 0111 1100 0010 => 2byte => '你'
		            1001 0111 1100 0010 => 2byte => '好'
    Unicode: 万国码(统一码) 编码全世界字符
		UTF-16:所有的字符统一使用两个字节编码(包括ASCII码也使用2byte)
		UTF-8:变长字节编码, 使用1~4字节去编码
              ASCII码=>1byte
              中文 =>大部分3byte
    ISO8859-1(latin1):西欧语言编码 对ASCII码表进行拓展,添加了一些字符,但是每个字符依然占用1byte

    *1.所有的码表都兼容ASCII码表,除了UTF-16之外,所有码表ASCII码字符都占用1byte
    *2.UTF-8,UTF-16,GBK都能识别中文

   编码(encode):字符=编码成>字节
   解码(decode):字节=解码成>字符
三.FileWriter类
	/**
	 * FileWriter类
	 * 构造方法:
	 *  FileWriter(String fileName):构造方法执行完会根据路径创建一个空白文件,如果该文件在硬盘已经存在会清空文件内容
	 *           根据给定的文件名构造一个 FileWriter 对象。
	 * 成员方法:
	 *   void write(int c): FileWriter底层会使用字符数组缓冲,将内容先写入到字符数组中,我们需要通过刷新将内容刷新到文件中
	 *                      close()方法:会先刷新在关流释放资源
	 *           写入单个字符。
	 *   void write(char[] cbuf)
	 *           写入字符数组。
	 *   write(char[] cbuf, int off, int len)
	 *           写入字符数组的某一部分。
	 *
	 *   void write(String str)
	 *           写入字符串
	 */
四.FileReader类
	/**
	 * FileReader类:
	 * 构造方法:
	 *   FileReader(String fileName)
	 *           在给定从中读取数据的文件名的情况下创建一个新 FileReader。
	 *   int read()
	 *           读取单个字符。
	 */
	/**
	 * 成员方法:
	 *   int read(char[] cbuf)
	 *           将字符读入数组。
	 * String类中的方法:
	 *   String(char[] value)
	 *           将一个字符数组转换成一个字符串
	 *   String(char[] value, int offset, int count)
	 *           分配一个新的 String，它包含取自字符数组参数一个子数组的字符。
	 */